package com.cheng.zenofdesignpatterns.extension.mvcframework;

import com.cheng.zenofdesignpatterns.ZoDPChapterBaseActivity;

public class UiZoDPMVCFramework extends ZoDPChapterBaseActivity {

    @Override
    protected void initData() {
        mTitleTV.setText("MVC框架");
        String content = "MVC框架的优点：\n" +
                "- 高重用性\n" +
                "- 低耦合\n" +
                "- 快速开发和便捷部署\n\n" +
                "MVC的系统架构\n" +
                "这里设计的MVC框架包含一下模块：\n" +
                "核心控制器（FilterDispatcher）、拦截器（Interceptor）、过滤器（Filter）、" +
                "模型管理器（Model Action）、视图管理器（View Provider）。\n" +
                "各个模块的职责如下：\n" +
                "- 核心控制器\n" +
                "MVC框架的入口，负责接收和反馈HTTP请求。\n" +
                "- 过滤器\n" +
                "Servlet容器内的过滤器，实现对数据的过滤处理。\n" +
                "- 拦截器\n" +
                "对进出模型的数据进行过滤，它不依赖系统容器，只过滤MVC框架内的业务数据。\n" +
                "- 模型管理器\n" +
                "提供一个模型框架，该框架内的所有业务操作都应该是无状态的，不关心容器对象，例如" +
                "Session、线程池等。\n" +
                "- 视图管理器\n" +
                "管理所有的视图，例如提供多语言的视图等。\n" +
                "- 辅助工具\n" +
                "其实就是一大堆的辅助管理工具，比如文件管理、对象管理等。\n\n" +
                "最佳实践\n" +
                "来看看用到了哪些模式：\n" +
                "- 工厂方法模式：通过工厂方法模式把所有的拦截器链实现出来，方便在系统初始化时直接" +
                "处理。\n" +
                "- 单例模式：Action的默认配置都是单例模式，在一般的应用中单例已经足够了，在复杂情" +
                "况下可以使用享元模式提供应用性能，减少单例模式的性能隐患。\n" +
                "- 责任链模式：建立拦截器链以及过滤器，实现任务的链条化处理。\n" +
                "- 迭代器模式：非常方便地遍历拦截器链内的拦截器，而不用再自己写遍历拦截器链的方法。\n" +
                "- 中介者模式：以核心控制器为核心，其他同事类都负责为核心控制器“打工”，保证核心控" +
                "制器瘦小、稳定。\n" +
                "- 观察者模式：配置文件修改时，不用重启应用可以即刻生效，提高使用者的体验。\n" +
                "- 桥梁模式：使不同的视图配合不同的语言文件，为终端用户展示不同的界面。\n" +
                "- 策略模式：对XML文件的检查可以使用两种不同的策略，而且可以在测试机和开发机中使" +
                "用不同的检查策略，方便系统的自由切换。\n" +
                "- 访问者模式：在解析XML文件时，使用访问者非常方便地访问到需要的对象。\n" +
                "- 适配器模式：把一个开发者不熟悉的对象转换为熟悉的对象，避免工具或框架对开发者的" +
                "影响。\n" +
                "- 门面模式：Action分发器负责所有的Action的分发工作，它提供了一个调用Action的唯" +
                "一入口，避免外部模块深入到模型模块内部。\n" +
                "- 代理模式：大量使用动态代理，确保了框架的智能化。";
        mContentTV.setText(content);
    }

}
